package com.ksyun.ks3.demo;

import com.ksyun.ks3.dto.ListMultipartUploadsResult;
import com.ksyun.ks3.service.request.ListMultipartUploadsRequest;

/**
 * @author lijunwei[lijunwei@kingsoft.com]  
 * 
 * @date 2014年12月2日 下午2:32:48
 * 
 * @description
 **/
public class ListMultipartUploadsDemo extends AbstractDemo {
	public ListMultipartUploadsResult listMultipartUploads() {
		ListMultipartUploadsRequest request = new ListMultipartUploadsRequest(
				"test.bucket");
		/**
		 * <p>
		 * keyMarker为空，uploadIdMarker不为空
		 * <P>
		 * <p>
		 * 无意义
		 * </p>
		 * <p>
		 * keyMarker不为空，uploadIdMarker不为空
		 * <P>
		 * <p>
		 * 列出分块上传object key为keyMarker，且upload id 大于uploadIdMarker的结果
		 * </p>
		 * <p>
		 * keyMarker不为空，uploadIdMarker为空
		 * <P>
		 * <p>
		 * 列出分块上传object key大于keyMarker的结果
		 * </p>
		 */
		request.setKeyMarker("keyMarker");
		request.setUploadIdMarker("uploadIdMarker");

		/**
		 * prefix和delimiter详解
		 * <p>
		 * commonPrefix由prefix和delimiter确定，以prefix开头的object
		 * key,在prefix之后第一次出现delimiter的位置之前（包含delimiter）的子字符串将存在于commonPrefixes中
		 * </p>
		 * <p>
		 * 比如有一下几个个分块上传
		 * </p>
		 * <p>
		 * aaaa/bbb/ddd.txt
		 * </p>
		 * <p>
		 * aaaa/ccc/eee.txt
		 * </p>
		 * <p>
		 * ssss/eee/fff.txt
		 * </p>
		 * <p>
		 * prefix为空 delimiter为/ 则commonPrefix 为 aaaa/和ssss/ 返回的uploads为空
		 * </p>
		 * <p>
		 * prefix为aaaa/ delimiter为/ 则commonPrefix 为 aaaa/bbb/和aaaa/ccc/ 返回的uploads为空
		 * </p>
		 * <p>
		 * prefix为ssss/ delimiter为/ 则commonPrefix 为 aaaa/eee/ 返回的uploads为空
		 * </p>
		 * <p>
		 * prefix为空 delimiter为空 则commonPrefix 为空
		 * 返回的uploads为aaaa/bbb/ddd.txt、aaaa/ccc/eee.txt、ssss/eee/fff.txt
		 * </p>
		 * <p>
		 * prefix为aaaa/ delimiter为空 则commonPrefix 为空
		 * 返回的uploads为aaaa/bbb/ddd.txt、aaaa/ccc/eee.txt
		 * </p>
		 * <p>
		 * prefix为ssss/ delimiter为空 则commonPrefix 为空 返回的uploads为ssss/eee/fff.txt
		 * </p>
		 * <p>
		 * 由于分布式文件存储系统中没有文件夹结构，所以用delimiter和prefix模拟文件夹结构,可以把prefix看成当前在哪个文件夹下，
		 * delimiter为文件夹分隔符，commonprefix为当前文件夹下的子文件夹
		 * </p>
		 */
		request.setDelimiter("/");
		request.setPrefix("prefix");
		request.setMaxUploads(100);// 最多返回100条记录

		ListMultipartUploadsResult result = client
				.listMultipartUploads(request);
		return result;
	}
}
